package com.zatech.cgnci.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zatech.cgnci.project.dto.CgnciClaimSettlementDTO;
import com.zatech.cgnci.project.dto.CgnciClaimSettlementQueryDTO;
import com.zatech.cgnci.project.dto.FlowTaskApprovalDTO;
import com.zatech.cgnci.project.dto.FlowTaskBackDTO;
import com.zatech.cgnci.project.dto.FlowTaskSubmitDTO;
import com.zatech.cgnci.project.dto.SettlementQueryDTO;
import com.zatech.cgnci.project.entity.CgnciClaimSettlementDO;
import com.zatech.cgnci.project.vo.ApprovalRecordVO;
import com.zatech.cgnci.project.vo.CgnciClaimSettlementPageVO;
import com.zatech.cgnci.project.vo.CgnciClaimSettlementVO;

import java.util.List;

/**
 * <p>
 * 分入结算记录表 服务类
 * </p>
 */
public interface CgnciClaimSettlementService extends IService<CgnciClaimSettlementDO> {

    /**
     * 分页查询
     */
    IPage<CgnciClaimSettlementPageVO> pageClaimSettlement(CgnciClaimSettlementQueryDTO queryDTO);

    /**
     * 详情
     */
    CgnciClaimSettlementVO detail(Long settlementId);

    /**
     * 预付申请
     */
    void add(CgnciClaimSettlementDTO settlementDTO);

    /**
     * 结案结算
     */
    void finalSettlement(CgnciClaimSettlementDTO settlementDTO);

    /**
     * 提交审核
     */
    void submit(FlowTaskSubmitDTO flowTaskDTO);

    /**
     * 审核通过
     */
    void approve(FlowTaskApprovalDTO flowTaskDTO);

    /**
     * 审核退回
     */
    void back(FlowTaskBackDTO flowTaskDTO);

    /**
     * 注销
     */
    void cancel(String taskId);

    /**
     * 获取操作日志
     */
    List<ApprovalRecordVO> log(Long settlementId);

    List<CgnciClaimSettlementVO> queryClaimSettlementByCaseNo(String caseNo);

    CgnciClaimSettlementVO settlementQuery(SettlementQueryDTO req);
}